POI搜索概述

最后更新时间:2019年6月17日

功能介绍

POI,即“Point of Interest”的缩写,可翻译为“兴趣点”,也称为“Point of Information”,即“信息点”。POI是电子地图中非常重要的一个要素,通常以气泡图标、文字等来展示,例如地图上的商场、学校、饭馆、银行、公交站、景点、政府机构、公司等等,都是POI。POI附带丰富的信息,如名称、类别、坐标、地址等,能更加详尽地描述某个位置点。

POI是基于位置服务的核心数据,因为其具有非常关键的空间位置信息。这也决定了POI在电子地图中具有非常广泛的应用场景,能够给用户展示周边的详尽信息,也可方便查询到需要的各个地方。例如,在互联网电子地图中我们经常用到的一个功能就是“发现周边/搜索附近”,用来搜索到附近的美食、景点等;当您要去一个地方时,也可以先通过关键字搜索进行地图定位,以此确定起点、终点,通过规划路线与导航功能,帮助您顺利到达目的地。这些功能应用,都涉及到POI查询,其实质就是通过对POI点的查询,找到用户感兴趣的地点。

1
关键字搜索

POI查询的关键字搜索方式,即根据用户输入的关键字、选择的类型进行模糊查询,搜索满足条件的POI信息点,可以通过标注、绘制或者列表方式展示查询到的兴趣点。

2
周边搜索

POI的周边搜索,即为范围查询方式,根据用户设置的查询范围(支持圆、矩形),可结合信息类型等条件进行查询,搜索满足条件的POI信息点,最后可以通过标注、绘制或者列表方式展示查询到的兴趣点。

功能接口

POI查询对应API程序包为com.zondy.mapgis.core.poisearch,其核心接口为POI查询类(PoiSearch)、POI搜索条件类(PoiSearch.Query)、POI搜索范围类(PoiSearch.SearchBound),以及POI类型定义类(PoiTypeDef)。查询关键接口如下所示:

接口 说明
initWithDBPath() 通过存放POI数据DB的路径进行初始化
setBound() 设置查询范围
setQuery() 设置查询条件
searchPOI() 查询POI

实现方法

MapGIS Mobile for Android的POI查询模块,提供关键字查询、周边查询的检索方式,可以根据城市、POI类型、关键字条件、范围条件(即圆、矩形)查询匹配的兴趣点,结果可以通过标注等方式在地图上展示。基于此POI查询模块实现常用POI功能,首先需要制作准备POI数据,并将数据拷贝到移动设备中,然后在程序中调用对应的POI接口实现,基本流程如下图 7 20所示。

POI查询实现过程.png

(1) POI数据准备:在MapGIS 10.3桌面平台工具中使用“移动数据转换工具”进行POI数据的制作、转换,将点简单要素类数据转换为移动端支持的离线POI数据包。支持行业标准的POI数据,也可自定义POI数据规范(POI类型编码等);参考POI数据组织模块

(2) POI查询对象准备:创建PoiSearch对象,通过initWithDBPath()方法初始化设置POI数据路径;

(3) 设置查询条件:通过setQuery()与setBound()分别设置属性条件与空间范围条件,其中属性条件包括关键字、POI类型、城市参数,空间范围条件支持圆、矩形、多边形类型;

(4) 查询、结果展示:调用searchPOI()方法查询POI数据,查询到的结果可通过标注、列表等方式展示。